import baseconfig from "./baseconfig.js"
import store from "../../store/index.js"

// 加载方法
export function showLoadGo(show) {
  store.commit("showLoadGo", show);
}

export function request(method,url,data){
	let header = {}
	//如果已经登录，header头中添加token

	if (uni.getStorageSync('TOKEN')) {
		Object.assign(header, {
			'X-token': uni.getStorageSync('TOKEN')
		})
	}
	
	let content_type = {
		'content-type': 'application/json'
	}
	if (method == 'POST') {
		content_type = {
			'content-type': 'application/x-www-form-urlencoded'
		}
	}
	Object.assign(header, content_type)
	return new Promise((resolve,reject)=>{
		showLoadGo(true);
		// uni.showLoading({
		// 	title:"加载中"
		// });
		
		uni.request({
			url:url,
			header:header,
			data:data,
			method:method,
			dataType: 'json', 
			success:function(res){
				showLoadGo(false);
				// uni.hideLoading()
				if(res.data.status == 400){
					if(res.data.errorCode==50005 || res.data.errorCode==40005 || res.data.errorCode==50001 || res.data.errorCode==50002 || res.data.errorCode==50007){
						
					}else{
						uni.showToast({
							icon: 'none',
							duration:1000,
							title: res.data.message
						});

					}

					// setTimeout(function(){
					// 	uni.reLaunch({
					// 		url: '/pages/index/city'
					// 	});
					// },1500);
				}else{
					if(res.data.errorCode != null){
						uni.showToast({
							icon: 'none',
							duration:2000,
							title: res.data.error.message 
						});
						return;
					}else{
						resolve(res);
					}
				}
			},
			fail: function(err){
				uni.hideLoading()
				reject(err)
			}
		})
	})
}
// 检测token是否失效的接口

export function textRequest(method,url,data){
	let header = {}
	//如果已经登录，header头中添加token

	if (uni.getStorageSync('TOKEN')) {
		Object.assign(header, {
			'X-token': uni.getStorageSync('TOKEN')
		})
	}
	
	let content_type = {
		'content-type': 'application/json'
	}
	if (method == 'POST') {
		content_type = {
			'content-type': 'application/x-www-form-urlencoded'
		}
	}
	Object.assign(header, content_type)
	return new Promise((resolve,reject)=>{
		
		showLoadGo(true);
		
		uni.request({
			url:url,
			header:header,
			data:data,
			method:method,
			dataType: 'json',
			success:function(res){
				showLoadGo(false);
				resolve(res);
				// if(res.data.status == 400){
				// 	if(res.data.errorCode==50005 || res.data.errorCode==40005 || res.data.errorCode==50001 || res.data.errorCode==50002 || res.data.errorCode==50007){
				// 		return true;
				// 	}else{
				// 		uni.showToast({
				// 			icon: 'none',
				// 			duration:1000,
				// 			title: res.data.message
				// 		});
				// 	}
				// }else{
				// 	if(res.data.errorCode != null){
				// 		uni.showToast({
				// 			icon: 'none',
				// 			duration:2000,
				// 			title: res.data.error.message 
				// 		});
				// 		return;
				// 	}else{
				// 		return false;
				// 	}
				// }

			},
			fail: function(err){
				uni.hideLoading()
				reject(err)
			}
		})
	})
}
export function geturl(url){
    return baseconfig.server+url
}
export function Get(url,data){
    let allurl = geturl(url);
	return request('GET',allurl,data)
}
export function Post(url,data){
    let allurl = geturl(url);
	return request('POST',allurl,data)
}
export function testToken(url,data){
    let allurl = geturl(url);
	return textRequest('GET',allurl,data)
}
    
// 上传文件 封装请求
export function uploadFile(url, options){
    let tempData = options || {}
    uni.showLoading({
        title: "上传中..."
    })
    return new Promise((resolve, reject) => {
        uni.uploadFile({
            url: `${base.BASE_URL}${url}`,
            filePath: tempData.file,
            name: 'file',
            formData: tempData,
            success: res => {
                if (res.statusCode == 200) {
                    let temp = JSON.parse(res.data)
                    // console.log('temp',temp)
                    if (temp.code == 200) {
                        resolve(temp)
                    } else {
                        reject(temp)
                        uni.showToast({
                            title: temp.msg || '接口错误(' + temp.code + ')',
                            icon: 'none'
                        })
                    }
                } else {
                    uni.showToast({
                        title: `未知错误(${res.statusCode})`,
                        icon: 'none'
                    })
                }
            },
            fail(e) {
                uni.showToast({
                    title: '接口请求超时',
                    icon: 'none'
                })
                reject(e.data)
            },
            complete: () => {
                uni.hideLoading()
            }
        });
    })
}
// 上传图片

export function uploadImg(url, data){
	let allurl = geturl(url);
    uni.showLoading({
        title: "上传中..."
    })
    return new Promise((resolve, reject) => {
        uni.uploadFile({
		    url: allurl, //仅为示例，非真实的接口地址

		    filePath: data,
		    name: 'file',
		    formData: {},
            success: res => {
				uni.hideLoading()
                if(res.data.status == 400){
                	uni.showToast({
                		icon: 'none',
                		duration:1000,
                		title: res.data.message
                	});
                	// setTimeout(function(){

                	// 	uni.reLaunch({

                	// 		url: '/pages/index/city'

                	// 	});

                	// },1500);

                }else{
                	if(res.data.errorCode != null){
                		uni.showToast({
                			icon: 'none',
                			duration:2000,
                			title: res.data.error.message 
                		});
                		return;
                	}else{
                		resolve(res);
                	}
                }
            },
            fail(e) {
                uni.showToast({
                    title: '接口请求超时',
                    icon: 'none'
                })
                reject(e.data)
            },
            complete: () => {
                uni.hideLoading()
            }
        });
    })
}